Generally, in communication applications, a communication session is established between a transmission terminal and a reception terminal, and communication is made on the established session. However, when a propagation delay time is very long between the transmission terminal and the reception terminal, or when communication is made across networks which differ in characteristics such as wired and wireless ones, the communication throughput degrades between the transmission terminal and the reception terminal.
As methods for solving this problem, there exist systems as disclosed in the following Documents 1-3. In this system, instead of making communication between a transmission terminal and a reception terminal in a single session, a relay apparatus is installed between the transmission terminal and the reception terminal. Then, communication is made by relaying data in two sessions, i.e., a session from the transmission terminal to the relay apparatus and a session from the relay apparatus to the reception terminal.
Document 1: JP-A-11-252179
Document 2: JP-A-2002-281104
Document 3: Bakre and B. R. Badrinath, “I-TCP; Indirect TCP for Mobile Host”, Department of Computer Science Rutgers University, DSC-TR-314, 1994 (http://www.it.iibt.ac.in/it644/papers/i-tcp.pdf)
A relay apparatus that has a large transmission buffer in order to prevent the throughput from degrading even if a propagation delay time is very long is known to be effective. However, when a large transmission buffer is contained, packets are delivered in a burst manner particularly when the TCP session starts slowly which causes congestion on a network, resulting in a lower throughput.
As a method for solving such a problem, there is a method which adjusts intervals at which packets are delivered in such a manner that the packets are not delivered in a burst manner from a TCP session, as disclosed in the following Document 4:
Document 4: A. Aagarwal, S. Savage, and T. Anderson, “Understanding the Performance of TCP Pacing”, in proceedings of IEEE INFOCOM' 2000
Also, as another method, output packets from a TCP session are placed in a queue and controlled to be delivered by a scheduler, thereby making it possible to deliver packets in an arbitrary bandwidth, to limit the throughput of another TCP session, and to improve the throughput of a particular session as well.
For relaying a session, the most frequent problem is that a processing load is generally high in processing of the TCP session so that fast relay processing is difficult. Also, when an adjustment is made for a packet delivery interval from the TCP session, the processing load becomes even higher.
As a system for speeding up the processing of the TCP session, there exist systems as described below. As a first system, there is a system for reducing the processing load on a relay apparatus by using a zero copy method for data transfer between the kernel of OS (Operating System) and an application program. In this first system, when data is passed between a kernel program for actually performing data transmission/reception processing and an application program for performing data relay processing, virtual data movement is performed through page mapping without performing a physical data copy.
As a second system, there is a system which only conducts retransmission control when relay processing is performed. In this second system, a session is not terminated in a relay apparatus, but one session is set between a transmitting and a reception terminal. Then, in the relay apparatus, when a packet received from the transmission terminal is delivered to the reception terminal, the packet is not only transferred, but is also saved in the relay apparatus.
The relay apparatus monitors an ACK (acknowledgement) packet returned from the reception terminal to the transmission terminal, delivers the saved packet to the reception terminal upon detection of a discarded packet between the relay apparatus and the reception terminal, to prevent a retransmission of the packet from the transmission terminal and to prevent a lower throughput between the transmission terminal and the reception terminal due to the discarded packet.
In this second system, relay processing is not performed between sessions, the retransmission processing alone is performed, so that the load on the relay apparatus can be reduced, as compared with the case where relay processing is performed.
As a third system, there is a system which performs relay processing only for a session which requires a relay, without performing the relay processing for a session which does not require a relay, thereby reducing the processing load on a relay apparatus. For example, as an illustration of this system, there is a system which measures the throughput of a session, and performs the relay processing only for selected sessions which allow for an improved throughput, if the relay processing is performed therefor, as described in the following Document 5.
Document 5: JP-A-11-112576
Also, as the aforementioned system, there is a system which does not perform relay processing when an HTTP (Hyper Text Transfer Protocol) request is transmitted, but performs the relay processing only when data is transferred, as disclosed in the following Document 6.
Document 6: JP-A-2002-312261
In the aforementioned conventional session relay systems, the first system has the problem that the processing load is also high besides the data copies. When delivery control is conducted in accordance with a TCP pacing system or a scheduler, a load for packet delivery control is added, in addition, to a TCP processing load, resulting in a higher overall processing load.
Also, when relay processing is performed for an upper layer protocol such as, for example, iSCSI (internet Small Computer System Interface), as well as for a relay of TCP sessions, packet delivery control is further added on the basis of congestion control on an upper layer, resulting in a yet higher processing load. Particularly, when there are a large number of sessions to be relayed, a higher processing load is required for conducting delivery control for packets between sessions.
Further, in conventional session relay systems, the first system has a problem in that the packet length is limited. To move virtual data between a TCP layer and an application in accordance with page mapping, the page size of a CPU (central processing unit) must match the packet length.
Generally, a session relay apparatus exists independently of transmitting and reception terminals, and the packet length cannot be previously assumed for use by the transmission terminals and reception terminals, so that no reduction in processing load can be expected by eliminating copies for those transmission and reception terminals which employ a packet length different from the page size of a bandwidth control apparatus.
On the other hand, in the conventional session relay systems, the second system has a problem in that it cannot improve a reduction in the throughput due to factors other than discarded packets. When session relay processing is performed, the session relay apparatus immediately returns an ACK packet to a transmission terminal in response to packets received from the transmission terminal, that area intended for confirming the reception. However, in this second system, a reception terminal simply returns an ACK packet to a transmission terminal, whereas the session relay apparatus itself does not return an ACK packet. For this reason, the second system provides a smaller throughput improving effect in an environment in which a propagation delay is large.
Also, in the conventional session relay systems, the third system has a problem in that the processing load is not reduced when there are a large number of sessions which must be relayed.